#!/usr/bin/env python
#  -*- coding: utf-8 -*-

# Tiago Falcao RA 046802
# Programa Cliente para Impressao via Invocação Remota


import Pyro.core
from sys import stdin
from os import environ

def main():
	user=environ['USER'] 
	passwd=user

	# Conexao
	local = raw_input("Entre com Localização da Impressora[localhost]: ")
	if local=="":
		local="localhost"
	uri="PYROLOC://"+local+":7766/printer"
	printer = Pyro.core.getProxyForURI(uri)
	
	while True:
		#Menu
		print "********************************************"
		print "Opção\t Ação"
		print "--------------------------------------------"
		print "0\tSair"
		print "1\tImprimir"
		print "2\tTotal de Paginas Impressas"
		print "3\tTotal de Paginas Impressas na Impressora"
		print "4\tListar Usuarios"
		print "5\tLog de Impressoes (Ultimas 10)"
		print "\n9\tTrocar de Usuario"
		print "--------------------------------------------"
		option=int(raw_input("Opção: "))
		
		#Sai
		if option==0:
			return

		#Impressao
		elif option==1:
			pages=int(raw_input("Paginas: "))
			print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
			if printer.Print(user,user,pages):
				print "Impressão OK"
			else:
				print "Erro na Impressão"
			print "\n\n\n\n\n\n"

		#Quantidade Impressa de Usuario
		elif option==2:
			print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
			print "Paginas Impressas:",printer.Count(user)

		#Quantidade Impressa na Impressora
		elif option==3:
			print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
			print "Paginas Impressas na Impressora:",printer.CountAll()

		#Quantidade Impressa de Usuario
		elif option==4:
			print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
			result=printer.ListUsers()
			print "Usuario\t\tPaginas Impressas"
			userprint=False
			for r in result[:10]:
				if r[0]==user:
					userprint=True
					print "*",
				print r[0]+"\t\t"+str(r[1])
			if not userprint:
				for r in result[10:]:
					if r[0]==user:
						print "..."
						print "*",r[0]+"\t\t"+str(r[1])

		#Log de Usuario
		elif option==5:
			print "\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
			result=printer.LogUser(user)
			print "Momento\t\t\tPaginas Impressas"
			for r in result[:10]:
				print str(r[0])+"\t"+str(r[1])

		#Trocar de Usuario
		elif option==9:
			user=raw_input("Usuario: ")
			passwd=user
			print "Senha:",passwd
		else:
			print "Opção Não Conhecida"



if __name__=="__main__":
	main()
